import axios from "axios";
import router from "@/router";

import { Message } from "element-ui";

import { baseUrl } from "../../config/prod.env";

const request = axios.create({
  baseURL: baseUrl,
  timeout: 10000
});

//请求白名单，如果请求在白名单里，将不会呗拦截权限校验
// const whiteUrls=["/admin/login","/admin/register"]

// request 拦截器
// 可以自请求发送前对请求做一些处理
// 比如统一加token，对请求参数统一加密
request.interceptors.request.use(
  config => {
    config.headers["Content-Type"] = "application/json;charset=utf-8";
    // //取出sessionStorage里面缓存的用户信息
    // let userJSON=sessionStorage.getItem("user");
    // // let tokenJSON=sessionStorage.getItem("token");
    // if(!whiteUrls.includes(config.url)){//检验请求白名单那
    //     if (!userJSON){
    //         router.push("/login")
    //     }else {
    //         let user=JSON.parse(userJSON);
    //         config.headers["token"]=user.token;//设置请求头
    //     }
    // }
    return config;
  },
  error => {
    Message.error(`错误消息：${error}`);
    return Promise.reject(error);
  }
);

// response 拦截器
// 可以在接口响应后统一处理结果
request.interceptors.response.use(
  response => {
    //  console.log('response 拦截器',response);
    let res = response.data;
    // 如果是返回的文件
    if (response.config.responseType === "blob") {
      return res;
    }
    // 兼容服务端返回的字符串数据
    if (typeof res === "string") {
      res = res ? JSON.parse(res) : res;
    }
    //验证code 不等于200
    if (res.code != 200) {
      Message.error(`错误消息：${res.message}`);
    }
    return res;
  },
  error => {
   
    Message.error(`错误消息：${error}`);
    return Promise.reject(error);
  }
);

export default request;
